//
//  iterator.swift
//  Documentation
//
//  Created by Toj on 6/28/23.
//

import Foundation

// MARK: - 1. STL关联式容器是什么
普通容器是什么: 容器是用来 存储 和 组织其他对象 的 对象
说简单点 数组就是容器, 存储一类数据的容器

关联式容器是什么: 跟普通容器不太一样.
此类容器在存储元素值的同时, 还会为各元素额外再配备一个键值,
它的功能: 是在使用关联式容器的过程中,
如果已知目标元素的键的值, 则直接通过该键就可以找到目标元素, 而无需再通过遍历整个容器的方式

// MARK: - 2. STL关联式容器种类
1. map:
使用该容器存储的数据, 其各个元素的键必须是唯一的(即不能重复).
该容器会根据各元素键的大小, 默认进行升序排序(调用 std::less<T>).
2. set:
使用该容器存储的数据, 各个元素键和值完全不同(键就是值), 且各个元素的值不能重复(保证了各元素键的唯一性).
该容器会自动根据各个元素的键(其实也就是元素值) 的大小进行升序排序(调用 std::less<T>).
3. multimap:
和 map 容器唯一的不同在于, multimap 容器中存储元素的键可以重复.
4. multiset:
和 set 容器唯一的不同在于, multiset 容器中存储元素的值可以重复(一旦值重复，则意味着键也是重复的).

C++ 11 还新增了 4 种哈希容器， 即
unordered_map、unordered_multimap 以及
unordered_set、unordered_multiset。
严格来说, 它们也属于关联式容器, 但由于哈希容器底层采用的是哈希表, 而不是红黑树.
